﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Configuration;

namespace VCN.admin.UC
{
    public partial class UploadUc : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            System.Configuration.Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
            HttpRuntimeSection section = config.GetSection("system.web/httpRuntime") as HttpRuntimeSection;
            maxFileSize = Math.Round(section.MaxRequestLength / 1024.0, 1);
        }
        string m_fileType;
        /// <summary>
        /// Kiểu file
        /// </summary>
        public string ContentFileType
        {
            get { return m_fileType; }
            set
            {
                m_fileType = value;
            }
        }


        public string FileType
        {
            get { return FileUploadControl.PostedFile.ContentType; }
        }

        double maxFileSize;
        bool m_isRename;

        public bool EnableRename
        {
            get { return m_isRename; }
            set { m_isRename = value; }
        }
        string m_name;

        public string FileName
        {
            get { return m_name; }
            set { m_name = value; }
        }


        public bool HasFile
        {
            get { return FileUploadControl.HasFile; }
        }

        string m_saveToDirectory;

        public string SaveToDirectory
        {
            get { return m_saveToDirectory; }
            set
            {
                if (value[0] == '/')
                {
                    value = value.Remove(0, 1);
                }
                m_saveToDirectory = Server.MapPath(value);
            }
        }

        bool isComplete = false;

        public bool IsUploadComplete
        {
            get { return isComplete; }
            set { isComplete = value; }
        }


        public string StartUpload()
        {
            if (FileUploadControl.HasFile)
            {
                try
                {
                    string v_str_fileName = FileUploadControl.FileName;
                    if (m_fileType.Contains(v_str_fileName.Substring(v_str_fileName.IndexOf('.') + 1, 3)))
                    {
                        //
                        if (FileUploadControl.PostedFile.ContentLength < maxFileSize * 1024 * 1024)
                        {
                            // Trường hợp: không đổi tên
                            if (EnableRename == false || FileName.Equals(""))
                            {
                                m_name = FileUploadControl.FileName;
                            }
                            
                            FileUploadControl.SaveAs(SaveToDirectory + FileName);

                            isComplete = true;
                            return FileName;

                        }
                        else
                        {
                            isComplete = false;
                            throw new Exception(string.Format("Trạng thái: Dung lượng file phải nhỏ hơn {0} kb!", maxFileSize));
                        }
                    }
                    else
                    {
                        isComplete = false;
                        throw new Exception(string.Format("Trạng thái: Chỉ chấp nhận các định dạng {0}", m_fileType));
                    }
                }
                catch (Exception ex)
                {
                    isComplete = false;
                    throw new Exception("Trạng thái: File không thể upload. Lỗi sau đây đã xẩy ra: " + ex.Message);
                }
            }
            else
            {
                isComplete = false;
                throw new Exception("Trạng thái: Bạn phải chọn 1 file để upload");
            }
        }

    }
}